"""
2017.06.07
读取文件，使用类保存数据，继承Python内置的list
Class Athlete
"""


class AthleteList(list):
    def __init__(self, a_name, a_dob=None, a_times=[]):
        list.__init__([])
        self.name = a_name
        self.dob = a_dob
        self.extend(a_times)

    def top3(self):
        return sorted(set([sanitize(t) for t in self]))[0:3]


def sanitize(time_string):
    """
    过滤(净化)
    :param time_string:
    :return:
    """
    if '-' in time_string:
        splitter = '-'
    elif ':' in time_string:
        splitter = ':'
    else:
        return time_string
    (mins, secs) = time_string.split(splitter)
    return mins + '.' + secs


# 读取教练的数据
def get_coach_data(filename):
    try:
        with open(filename) as f:
            data = f.readline().strip().split(',')
            a = AthleteList(data.pop(0), data.pop(0), data)
        return a
    except IOError as err:
        print('File error: ' + str(err))
        return None


vera = AthleteList('vera vi')
vera.append('1.11')
vera.extend(['1.10', '1-13', '1:15'])

print(vera.top3())

# 将sarah数据文件转为一个列表
sarah = get_coach_data('sarah2.txt')
james = get_coach_data('james2.txt')
mikey = get_coach_data('mikey2.txt')
julie = get_coach_data('julie2.txt')

print(sarah.name + "'s best times are: " + str(sarah.top3()))
print(james.name + "'s best times are: " + str(james.top3()))
print(mikey.name + "'s best times are: " + str(mikey.top3()))
print(julie.name + "'s best times are: " + str(julie.top3()))
